#![allow(unused_imports, non_snake_case, non_camel_case_types)]

mod comptr;
mod guiddef;
mod libload;
mod string;
mod unknown;
mod windef;

pub use comptr::*;
pub use guiddef::*;
pub use libload::*;
pub use string::*;
pub use unknown::*;
pub use windef::*;

pub use std::ffi::*;
pub use std::ptr;

pub const SPI_GETNONCLIENTMETRICS: UINT = 0x0029;

extern "system" {
	pub fn SystemParametersInfoW(uiAction: UINT, uiParam: UINT, pvParam: PVOID, fWinIni: UINT) -> BOOL;
}

#[repr(C)]
#[derive(Copy)]
pub struct NONCLIENTMETRICSW {
	pub cbSize: UINT,
	pub iBorderWidth: c_int,
	pub iScrollWidth: c_int,
	pub iScrollHeight: c_int,
	pub iCaptionWidth: c_int,
	pub iCaptionHeight: c_int,
	pub lfCaptionFont: LOGFONTW,
	pub iSmCaptionWidth: c_int,
	pub iSmCaptionHeight: c_int,
	pub lfSmCaptionFont: LOGFONTW,
	pub iMenuWidth: c_int,
	pub iMenuHeight: c_int,
	pub lfMenuFont: LOGFONTW,
	pub lfStatusFont: LOGFONTW,
	pub lfMessageFont: LOGFONTW,
	pub iPaddedBorderWidth: c_int,
}
impl Clone for NONCLIENTMETRICSW {
	#[inline]
	fn clone(&self) -> NONCLIENTMETRICSW {
		*self
	}
}
impl Default for NONCLIENTMETRICSW {
	#[inline]
	fn default() -> NONCLIENTMETRICSW {
		unsafe { core::mem::zeroed() }
	}
}

pub const LF_FACESIZE: usize = 32;

#[repr(C)]
#[derive(Copy)]
pub struct LOGFONTW {
	pub lfHeight: LONG,
	pub lfWidth: LONG,
	pub lfEscapement: LONG,
	pub lfOrientation: LONG,
	pub lfWeight: LONG,
	pub lfItalic: BYTE,
	pub lfUnderline: BYTE,
	pub lfStrikeOut: BYTE,
	pub lfCharSet: BYTE,
	pub lfOutPrecision: BYTE,
	pub lfClipPrecision: BYTE,
	pub lfQuality: BYTE,
	pub lfPitchAndFamily: BYTE,
	pub lfFaceName: [WCHAR; LF_FACESIZE],
}
impl Clone for LOGFONTW {
	#[inline]
	fn clone(&self) -> LOGFONTW {
		*self
	}
}
impl Default for LOGFONTW {
	#[inline]
	fn default() -> LOGFONTW {
		unsafe { core::mem::zeroed() }
	}
}
